#define _CRT_SECURE_NO_WARNINGS
//作者：宋安康
#include<bits/stdc++.h>
using namespace std;
//排序

//冒泡排序
// 冒泡实现
//const int N = 1e3 + 9;
//int a[N];
//int main() 
//{
//	int n;
//	cin >> n;
//	for (int i = 1; i <= n ; i++)
//	{
//		cin >> a[i];
//	}
//	for (int i = n; i >= 1; i--)
//	{
//		for (int j = 1; j <= i - 1; j++)
//		{
//			if (a[j] > a[j + 1])
//			{
//				swap(a[j],a[j+ 1] );
//			}
//		}
//	}for (int i = 1; i <= n; i++)
//	{
//		cout << a[i] << " ";
//	}
//	return 0;
//}

//const int N = 1030;
//int a[N];
//
//int main() 
//{
//	int n;
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//	for (int i = n; i >= 1; i--)
//	{
//		for (int j = 1; j < i; j++)
//		{
//			if (a[j] > a[j + 1]) 
//			{
//				swap(a[j],a[j+ 1]);
//			}
//		}
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		cout << a[i] << " ";
//	}
//	cout << endl;
//	return 0;
//}

//归并排序
//和快速排序相似，也是基于分治排序的一种排序方法
//归并实现
//const int N = 1e3 + 9;
//int b[N];
//int x[N];
//void Mergesort(int a[],int l,int r)
//{
//
//	if (l == r)return;
//	int mid = (l + r) / 2;
//	Mergesort(a,l,mid);
//	Mergesort(a,mid + 1,r);
//
//	int pl = l, pr = mid + 1, pb = l;
//	while (pl <= mid ||pr <= r)
//	{
//		if (pl > mid)
//		{
//			b[pb++] = a[pr++];
//		}
//		else if (pr > r)
//		{
//			b[pb++] = a[pl++];
//		}
//		else
//		{
//			if (a[pl] < a[pr])
//			{
//				b[pb++] = a[pl++];
//			}else
//			{
//				b[pb++] = a[pr++];
//			}
//		}
//	}
//	for (int i = 1; i <= r ; i++)
//	{
//		a[i] = b[i];
//	}
//
//}
//
//int main() 
//{
//	int n;
//	cin >> n;
//
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> x[i];
//	}
//	Mergesort(x,1,n);
//	for (int i = 1; i <= n; i++)
//	{
//		cout << x[i] << " ";
//	}
//	cout << endl;
//	return 0;
//}

//快速排序
//快速排序是一种基于分治法的排序方法
//将一个数组分为两个子数组，其中一个子数组的所有元素都小于另一个子数组的所有元素，\
然后递归的对两个数组进行排序
//快速排序的实现
//const int N = 1e3 + 9;
//int a[N];
//int Partition(int a[],int l,int r)
//{
//	int pivot = a[r];
//	int i = l;
//	int j = r;
//	while (i < j)
//	{
//		while (i < j && a[i] <= pivot) i++;
//		while (i < j && a[j] >= pivot) j--;
//		if (i < j)
//		{
//			swap(a[i],a[j]);
//		}
//		else
//		{
//			swap(a[i],a[r]);
//		}
//	}
//	return i;
//}
//void QuickSort(int a[],int l,int r)
//{
//	if (l < r)
//	{
//		int mid = Partition(a,l,r);
//		QuickSort(a, l, mid - 1);
//		QuickSort(a,mid + 1,r);
//	}
//}
//int main()
//{
//	int n;
//	cin >> n;
//
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//	return 0;
//}

//插入排序
//一种简单直观的排序算法
//是将待排序的元素逐个插入到已排序序列的合适位置中，使得已排序序列逐渐扩大，从而逐步构建有序序列
//const int N = 1e3 + 9;
//int a[N];
//int main() 
//{
//	ios::sync_with_stdio(0), cin. tie(0), cout.tie(0);
//	int n;
//	cin >> n;
//	for (int i = 0; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//	for (int i = 2; i <= n; i++)
//	{
//		int val = a[i], j;
//		for (j =  i;j > 1 && val < a[j-1]; j--)
//		{
//			a[j] = a[j-1];
//		}
//		a[j] = val;
//	}
//	for (int i = 0; i <= n; i++)
//	{
//		cout << a[i] << " ";
//
//	}
//	cout << endl;
//	return 0;
//}

//桶排序
//是一种非比较的排序算法，分类和分治的思想
//1、将值域分为若干段，每段对应一个桶
//2、将待排序元素放入对应的桶中
//3、将个桶内元素进行排序
//4、将桶中的元素依次取出
//const int MAXN = 5e5 + 7;
//int n;
//int bucket[MAXN];
//
//int main() 
//{
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		int x;
//		cin >> x;
//		bucket[x]++;
//	}
//	for (int i = 0; i <= n; i++)
//	{
//		for (int j = 1;j <= bucket[i]; j++)
//		{
//			cout << i << " ";
//		}
//	}
//	cout << endl;
//
//	return 0;
//}

//快速排序
//const int N = 1e3 + 9;
//int a[N];
//int main() 
//{
//	int n;
//	cin >> n;
//	for (int  i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//	for (int i = n; i>= 1; i--)
//	{
//		int max_id = 1;
//		for (int j = 1; j <= i; j++)
//		{
//			if (a[j] > a[max_id])max_id = j;
//
//		}
//		swap(a[max_id],a[i]);
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		cout << a[i]<<" ";
//	}
//	cout << endl;
//	return 0;
//}

const int N = 1e3 + 9;
int a[N];
int main() 
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	for (int i = n; i >= 1; i--)
	{
		int max_id = 1;
		for (int j = 1; j <= i; j++)
		{
			if (a[j] > a[max_id])max_id = j;
			swap(a[max_id],a[i]);
		}
	}

	for (int i = 1; i <= n; i++)
	{
		cout << a[i] << ' ';
	}
	cout << endl;

	return 0;
}